<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>		
		<script>
		// new 关键字
		// 01 创建个对象
		// 02 把this传入执行构造函数
		// 03 修改对象原型的constructor指向
		function myNew(fun,...args){
		// 01 创建一个空的对象
		var  obj = Object.create({});	
		// 02 执行函数 用对象充当函数的this
		fun.call(obj,...args);
		// 修正构造函数
		obj.__proto__.constructor = fun;
		return obj;
		
		}
		
		function Person(name,age){
			this.name = name;
			this.age = age;
		}
		
		var p1 = new Person("曾庆林",18);
		var p2 = myNew(Person,"zql",20);
	
		
		</script>
	</body>
</html>
